home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / appsrcs.zip / APPSETUP.ZIP / APPSYS.C < prev    next >
C/C++ Source or Header  |  1993-05-06  |  10KB  |  279 lines

  1. #define STRICT
  2. #include <windows.h>
  3. #include <windowsx.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include "appsetup.h"
  8.  
  9. /*-------------------------------------------------------------------------*/
  10. BOOL WINAPI SystemDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  11.     {
  12.     static DLGPROC   lpfnAboutDlgProc;
  13.     HWND         hCtrl;
  14.     char         intstring[MAXDIGITS];
  15.     short         nCtrlID;
  16.     BOOL         bSigned = TRUE;
  17.  
  18.     switch(message)
  19.     {
  20.     case WM_INITDIALOG:
  21.         AppSystemNew = AppSystem;
  22.         CheckDlgButton(hDlg, IDD_STAYINFRONT, AppSystem.StayInFront);
  23.         CheckDlgButton(hDlg, IDD_CLOSEALL, AppSystem.CloseAll);
  24.         CheckDlgButton(hDlg, IDD_DOUBLECLICK, AppSystem.DoubleClick);
  25.         CheckDlgButton(hDlg, IDD_BIGBUTTONS, AppSystem.BigButtons);
  26.         SetDlgItemInt(hDlg, IDD_LEFT, (int) AppSystemNew.Left, bSigned);
  27.         SetDlgItemInt(hDlg, IDD_TOP, (int) AppSystemNew.Top, bSigned);
  28.         SetDlgItemInt(hDlg, IDD_BUTTONS, AppSystemNew.Buttons, bSigned);
  29.         SetDlgItemInt(hDlg, IDD_ROWS, AppSystemNew.Columns, bSigned);
  30.         SetDlgItemInt(hDlg, IDD_BORDER, AppSystemNew.Border, bSigned);
  31.         return TRUE;
  32.  
  33.     case WM_VSCROLL:
  34.         hCtrl = (HWND) HIWORD(lParam);
  35.         nCtrlID = GetWindowWord(hCtrl, GWW_ID);
  36.         switch(wParam)
  37.         {
  38.         case SB_LINEDOWN:
  39.             switch(nCtrlID)
  40.             {
  41.             case IDD_SCROLLLEFT:
  42.                 GetDlgItemText(hDlg, IDD_LEFT, intstring, MAXDIGITS);
  43.                 AppSystemNew.Left = min(MAXRES, AppSystemNew.Left);
  44.                 AppSystemNew.Left = max(-1, AppSystemNew.Left-1);
  45.                 SetDlgItemInt(hDlg, IDD_LEFT, (int) AppSystemNew.Left, bSigned);
  46.                 break;
  47.  
  48.             case IDD_SCROLLTOP:
  49.                 GetDlgItemText(hDlg, IDD_TOP, intstring, MAXDIGITS);
  50.                 AppSystemNew.Top = atoi(intstring);
  51.                 AppSystemNew.Top = min(MAXRES, AppSystemNew.Top);
  52.                 AppSystemNew.Top = max(-1, AppSystemNew.Top-1);
  53.                 SetDlgItemInt(hDlg, IDD_TOP, (int) AppSystemNew.Top, bSigned);
  54.                 break;
  55.  
  56.             case IDD_SCROLLBUTTONS:
  57.                 GetDlgItemText(hDlg, IDD_BUTTONS, intstring, MAXDIGITS);
  58.                 AppSystemNew.Buttons = atoi(intstring);
  59.                 AppSystemNew.Buttons = min(MAXAPPS, AppSystemNew.Buttons);
  60.                 AppSystemNew.Buttons = max(1, AppSystemNew.Buttons-1);
  61.                 SetDlgItemInt(hDlg, IDD_BUTTONS, AppSystemNew.Buttons, bSigned);
  62.                 if(AppSystemNew.Columns > AppSystemNew.Buttons+2) // add two systembutton's
  63.                 {
  64.                 AppSystemNew.Columns = AppSystemNew.Buttons+2;
  65.                 SetDlgItemInt(hDlg, IDD_ROWS, AppSystemNew.Columns, bSigned);
  66.                 }
  67.                 break;
  68.  
  69.             case IDD_SCROLLROWS:
  70.                 GetDlgItemText(hDlg, IDD_ROWS, intstring, MAXDIGITS);
  71.                 AppSystemNew.Columns = atoi(intstring);
  72.                 AppSystemNew.Columns = min(AppSystemNew.Buttons+2, AppSystemNew.Columns);
  73.                 AppSystemNew.Columns = max(1, AppSystemNew.Columns-1);
  74.                 SetDlgItemInt(hDlg, IDD_ROWS, AppSystemNew.Columns, bSigned);
  75.                 break;
  76.  
  77.             case IDD_SCROLLBORDER:
  78.                 GetDlgItemText(hDlg, IDD_BORDER, intstring, MAXDIGITS);
  79.                 AppSystemNew.Border = atoi(intstring);
  80.                 AppSystemNew.Border = min(MAXBORDER, AppSystemNew.Border);
  81.                 AppSystemNew.Border = max(0, AppSystemNew.Border-1);
  82.                 if(AppSystemNew.Border < 3)
  83.                 AppSystemNew.Border = 0;
  84.                 SetDlgItemInt(hDlg, IDD_BORDER, AppSystemNew.Border, bSigned);
  85.                 break;
  86.              }
  87.             break;
  88.  
  89.         case SB_LINEUP:
  90.             switch(nCtrlID)
  91.             {
  92.             case IDD_SCROLLLEFT:
  93.                 GetDlgItemText(hDlg, IDD_LEFT, intstring, MAXDIGITS);
  94.                 AppSystemNew.Left = atoi(intstring);
  95.                 AppSystemNew.Left = max(-1, AppSystemNew.Left);
  96.                 AppSystemNew.Left = min(MAXRES, AppSystemNew.Left+1);
  97.                 SetDlgItemInt(hDlg, IDD_LEFT, (int) AppSystemNew.Left, bSigned);
  98.                 break;
  99.  
  100.             case IDD_SCROLLTOP:
  101.                 GetDlgItemText(hDlg, IDD_TOP, intstring, MAXDIGITS);
  102.                 AppSystemNew.Top = atoi(intstring);
  103.                 AppSystemNew.Top = max(-1, AppSystemNew.Top);
  104.                 AppSystemNew.Top = min(MAXRES, AppSystemNew.Top+1);
  105.                 SetDlgItemInt(hDlg, IDD_TOP, (int) AppSystemNew.Top, bSigned);
  106.                 break;
  107.  
  108.             case IDD_SCROLLBUTTONS:
  109.                 GetDlgItemText(hDlg, IDD_BUTTONS, intstring, MAXDIGITS);
  110.                 AppSystemNew.Buttons = atoi(intstring);
  111.                 AppSystemNew.Buttons = max(1, AppSystemNew.Buttons);
  112.                 AppSystemNew.Buttons = min(MAXAPPS, AppSystemNew.Buttons+1);
  113.                 SetDlgItemInt(hDlg, IDD_BUTTONS, AppSystemNew.Buttons, bSigned);
  114.                 break;
  115.  
  116.             case IDD_SCROLLROWS:
  117.                 GetDlgItemText(hDlg, IDD_ROWS, intstring, MAXDIGITS);
  118.                 AppSystemNew.Columns = atoi(intstring);
  119.                 AppSystemNew.Columns = max(1, AppSystemNew.Columns);
  120.                 AppSystemNew.Columns = min(AppSystemNew.Buttons+2, AppSystemNew.Columns+1);
  121.                 SetDlgItemInt(hDlg, IDD_ROWS, AppSystemNew.Columns, bSigned);
  122.                 break;
  123.  
  124.             case IDD_SCROLLBORDER:
  125.                 GetDlgItemText(hDlg, IDD_BORDER, intstring, MAXDIGITS);
  126.                 AppSystemNew.Border = atoi(intstring);
  127.                 AppSystemNew.Border = max(0, AppSystemNew.Border);
  128.                 AppSystemNew.Border = min(MAXBORDER, AppSystemNew.Border+1);
  129.                 if(AppSystemNew.Border < 3)
  130.                 AppSystemNew.Border = 3;
  131.                 SetDlgItemInt(hDlg, IDD_BORDER, AppSystemNew.Border, bSigned);
  132.                 break;
  133.             }
  134.             break;
  135.         }
  136.         return TRUE;
  137.  
  138.     case WM_COMMAND:
  139.         switch(wParam)
  140.         {
  141.         case IDD_STAYINFRONT:
  142.             if(IsDlgButtonChecked(hDlg,IDD_STAYINFRONT))
  143.             AppSystemNew.StayInFront = 0;
  144.             else
  145.             AppSystemNew.StayInFront = 1;
  146.             CheckDlgButton(hDlg, IDD_STAYINFRONT, AppSystemNew.StayInFront);
  147.             return TRUE;
  148.  
  149.         case IDD_CLOSEALL:
  150.             if(IsDlgButtonChecked(hDlg,IDD_CLOSEALL))
  151.             AppSystemNew.CloseAll = 0;
  152.             else
  153.             AppSystemNew.CloseAll = 1;
  154.             CheckDlgButton(hDlg, IDD_CLOSEALL, AppSystemNew.CloseAll);
  155.             return TRUE;
  156.  
  157.         case IDD_DOUBLECLICK:
  158.             if(IsDlgButtonChecked(hDlg,IDD_DOUBLECLICK))
  159.             AppSystemNew.DoubleClick = 0;
  160.             else
  161.             AppSystemNew.DoubleClick = 1;
  162.             CheckDlgButton(hDlg, IDD_DOUBLECLICK, AppSystemNew.DoubleClick);
  163.             return TRUE;
  164.  
  165.         case IDD_BIGBUTTONS:
  166.             if(IsDlgButtonChecked(hDlg,IDD_BIGBUTTONS))
  167.             AppSystemNew.BigButtons = 0;
  168.             else
  169.             AppSystemNew.BigButtons = 1;
  170.             CheckDlgButton(hDlg, IDD_BIGBUTTONS, AppSystemNew.BigButtons);
  171.             return TRUE;
  172.  
  173.         case IDD_LEFT:
  174.             if(HIWORD(lParam) == EN_KILLFOCUS)
  175.             {
  176.             GetDlgItemText(hDlg, IDD_LEFT, intstring, MAXDIGITS);
  177.             AppSystemNew.Left = atoi(intstring);
  178.             AppSystemNew.Left = min(MAXRES, AppSystemNew.Left);
  179.             AppSystemNew.Left = max(-1, AppSystemNew.Left);
  180.             SetDlgItemInt(hDlg, IDD_LEFT, (int) AppSystemNew.Left, bSigned);
  181.             }
  182.             return TRUE;
  183.  
  184.         case IDD_TOP:
  185.             if(HIWORD(lParam) == EN_KILLFOCUS)
  186.             {
  187.             GetDlgItemText(hDlg, IDD_TOP, intstring, MAXDIGITS);
  188.             AppSystemNew.Top = atoi(intstring);
  189.             AppSystemNew.Top = min(MAXRES, AppSystemNew.Top);
  190.             AppSystemNew.Top = max(-1, AppSystemNew.Top);
  191.             SetDlgItemInt(hDlg, IDD_TOP, (int) AppSystemNew.Top, bSigned);
  192.             }
  193.             return TRUE;
  194.  
  195.         case IDD_BUTTONS:
  196.             if(HIWORD(lParam) == EN_KILLFOCUS)
  197.             {
  198.             GetDlgItemText(hDlg, IDD_BUTTONS, intstring, MAXDIGITS);
  199.             AppSystemNew.Buttons = atoi(intstring);
  200.             AppSystemNew.Buttons = min(MAXAPPS, AppSystemNew.Buttons);
  201.             AppSystemNew.Buttons = max(1, AppSystemNew.Buttons);
  202.             SetDlgItemInt(hDlg, IDD_BUTTONS, AppSystemNew.Buttons, bSigned);
  203.             if(AppSystemNew.Columns > AppSystemNew.Buttons)
  204.                 {
  205.                 AppSystemNew.Columns = AppSystemNew.Buttons;
  206.                 SetDlgItemInt(hDlg, IDD_ROWS, AppSystemNew.Columns, bSigned);
  207.                 }
  208.             }
  209.             return TRUE;
  210.  
  211.         case IDD_ROWS:
  212.             if(HIWORD(lParam) == EN_KILLFOCUS)
  213.             {
  214.             GetDlgItemText(hDlg, IDD_ROWS, intstring, MAXDIGITS);
  215.             AppSystemNew.Columns = atoi(intstring);
  216.             AppSystemNew.Columns = min(AppSystem.Buttons, AppSystemNew.Columns);
  217.             AppSystemNew.Columns = max(1, AppSystemNew.Columns);
  218.             SetDlgItemInt(hDlg, IDD_ROWS, AppSystemNew.Columns, bSigned);
  219.             }
  220.             return TRUE;
  221.  
  222.         case IDD_BORDER:
  223.             if(HIWORD(lParam) == EN_KILLFOCUS)
  224.             {
  225.             GetDlgItemText(hDlg, IDD_BORDER, intstring, MAXDIGITS);
  226.             AppSystemNew.Border = atoi(intstring);
  227.             AppSystemNew.Border = min(MAXBORDER, AppSystemNew.Border);
  228.             AppSystemNew.Columns = max(0, AppSystemNew.Border);
  229.             if(AppSystemNew.Border < 3)
  230.                 AppSystemNew.Border = 0;
  231.             SetDlgItemInt(hDlg, IDD_BORDER, AppSystemNew.Border, bSigned);
  232.             }
  233.             return TRUE;
  234.  
  235.         case IDD_DEFAULT:
  236.             AppSystemNew.Left = atoi(LEFT_DEFAULT);
  237.             AppSystemNew.Top = atoi(TOP_DEFAULT);
  238.             AppSystemNew.Columns = atoi(COLUMNS_DEFAULT);
  239.             AppSystemNew.Buttons = atoi(BUTTONS_DEFAULT);
  240.             AppSystemNew.CloseAll = atoi(CLOSEALL_DEFAULT);
  241.             AppSystemNew.StayInFront = atoi(STAYINFRONT_DEFAULT);
  242.             AppSystemNew.DoubleClick = atoi(DOUBLECLICK_DEFAULT);
  243.             AppSystemNew.BigButtons = atoi(BIGBUTTONS_DEFAULT);
  244.             CheckDlgButton(hDlg, IDD_STAYINFRONT, AppSystemNew.StayInFront);
  245.             CheckDlgButton(hDlg, IDD_CLOSEALL, AppSystemNew.CloseAll);
  246.             CheckDlgButton(hDlg, IDD_DOUBLECLICK, AppSystemNew.DoubleClick);
  247.             CheckDlgButton(hDlg, IDD_BIGBUTTONS, AppSystemNew.BigButtons);
  248.             SetDlgItemText(hDlg, IDD_LEFT, (LPSTR) LEFT_DEFAULT);
  249.             SetDlgItemText(hDlg, IDD_TOP, (LPSTR) TOP_DEFAULT);
  250.             SetDlgItemText(hDlg, IDD_BUTTONS, (LPSTR) BUTTONS_DEFAULT);
  251.             SetDlgItemText(hDlg, IDD_ROWS, (LPSTR) COLUMNS_DEFAULT);
  252.             SetDlgItemText(hDlg, IDD_BORDER, (LPSTR) BORDER_DEFAULT);
  253.             return TRUE;
  254.  
  255.         case IDD_ABOUT:
  256.             lpfnAboutDlgProc = (DLGPROC) MakeProcInstance(AboutDlgProc, hInst);
  257.             DialogBox(hInst, "AboutDlg", hWnd, lpfnAboutDlgProc);
  258.             FreeProcInstance((FARPROC) lpfnAboutDlgProc);
  259.             break;
  260.  
  261.         case IDD_HELP:
  262.             WinHelp(hWnd, "AppSetup.hlp",HELP_CONTENTS, 0L);
  263.             return TRUE;
  264.  
  265.         case IDOK:
  266.             AppSystem = AppSystemNew;
  267.             bSave = TRUE;
  268.             EndDialog(hDlg, 0);
  269.             return TRUE;
  270.  
  271.         case IDCANCEL:
  272.             EndDialog(hDlg, 0);
  273.             return TRUE;
  274.         }
  275.         break;
  276.     }
  277.     return FALSE;
  278.     }
  279.